{
 "metadata": {
  "name": "",
  "signature": "sha256:bd80627375b723e7dcb33e7a486992883057e89b4e88b2a396fae6bcb8f148be"
 },
 "nbformat": 3,
 "nbformat_minor": 0,
 "worksheets": [
  {
   "cells": [
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import os\n",
      "import pyNastran\n",
      "print pyNastran.__file__\n",
      "print pyNastran.__version__\n",
      "pkg_path = pyNastran.__path__[0]\n",
      "\n",
      "from pyNastran.bdf.bdf import BDF\n",
      "from pyNastran.utils import object_attributes, object_methods\n",
      "\n",
      "print \"pkg_path =\", pkg_path"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " c:\\nasa\\m4\\formats\\pynastran_v0.7\\pyNastran\\__init__.pyc\n",
        "0.7.0_dev\n",
        "pkg_path ="
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        " c:\\nasa\\m4\\formats\\pynastran_v0.7\\pyNastran\n"
       ]
      }
     ],
     "prompt_number": 19
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "bdf_filename = os.path.abspath(os.path.join(pkg_path, '..', 'models', 'iSat', 'ISat_Launch_Sm_Rgd.dat'))\n",
      "print bdf_filename\n",
      "\n",
      "# look at the model\n",
      "!pyNastranGUI_qt -f nastran -i {bdf_filename} > junk.out"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "c:\\nasa\\m4\\formats\\pynastran_v0.7\\models\\iSat\\ISat_Launch_Sm_Rgd.dat\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "Using PyQt4\n",
        "is_centroidal = True\n",
        "formats = [u'cart3d', u'lawgs', u'nastran', u'panair', u'plot3d', u'shabp', u'stl', u'usm3d']\n",
        "key =  t\n",
        "geometry_format = 'nastran'\n",
        "ncases = 2\n",
        "caseKeys = [(0, 'Element_ID', 1, 'centroid', '%.0f'), (0, 'Pid', 1, 'centroid', '%.0f')]\n",
        "finish_io case A\n",
        "is_nodal=False is_centroidal=True\n",
        "key = (0, 'Element_ID', 1, 'centroid', '%.0f')\n",
        "subcaseID=0 resultType='Element_ID' subtitle='case=NA' label='label=NA'\n",
        "max_value=5673 min_value=1 norm_value=5672.0\n",
        "UpdateScalarBar min=1 max=5673 norm=5672.0\n",
        "key =  r\n",
        "key =  w\n",
        "key =  s\n",
        "key =  w\n",
        "is_nodal=False is_centroidal=True\n",
        "key = (0, 'Pid', 1, 'centroid', '%.0f')\n",
        "subcaseID=0 resultType='Pid' subtitle='case=NA' label='label=NA'\n",
        "max_value=61 min_value=1 norm_value=60.0\n",
        "UpdateScalarBar min=1 max=61 norm=60.0\n",
        "is_nodal=False is_centroidal=True\n",
        "key = (0, 'Element_ID', 1, 'centroid', '%.0f')\n",
        "subcaseID=0 resultType='Element_ID' subtitle='case=NA' label='label=NA'\n",
        "max_value=5673 min_value=1 norm_value=5672.0\n",
        "UpdateScalarBar min=1 max=5673 norm=5672.0\n",
        "is_nodal=False is_centroidal=True\n",
        "key = (0, 'Pid', 1, 'centroid', '%.0f')\n",
        "subcaseID=0 resultType='Pid' subtitle='case=NA' label='label=NA'\n",
        "max_value=61 min_value=1 norm_value=60.0\n",
        "UpdateScalarBar min=1 max=61 norm=60.0\n",
        "is_nodal=False is_centroidal=True\n",
        "key = (0, 'Element_ID', 1, 'centroid', '%.0f')\n",
        "subcaseID=0 resultType='Element_ID' subtitle='case=NA' label='label=NA'\n",
        "max_value=5673 min_value=1 norm_value=5672.0\n",
        "UpdateScalarBar min=1 max=5673 norm=5672.0\n",
        "is_nodal=False is_centroidal=True\n",
        "key = (0, 'Pid', 1, 'centroid', '%.0f')\n",
        "subcaseID=0 resultType='Pid' subtitle='case=NA' label='label=NA'\n",
        "max_value=61 min_value=1 norm_value=60.0\n",
        "UpdateScalarBar min=1 max=61 norm=60.0\n"
       ]
      }
     ],
     "prompt_number": 57
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print bdf_filename\n",
      "\n",
      "# create the BDF object\n",
      "bdf = BDF()\n",
      "\n",
      "# read the file from the GUI\n",
      "# don't cross-reference\n",
      "#bdf.read_bdf(xref=False)\n",
      "bdf.read_bdf(bdf_filename, xref=False)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "#bdf_filename = r'D:\\work\\pynastran_0.7.0_py27\\models\\iSat\\ISat_Launch_Sm_Rgd.dat'\n",
      "#bdf_filename = r'C:\\Users\\Steve\\Dropbox\\pyNastran_examples\\iSat\\ISat_Launch_Sm_Rgd.dat'\n",
      "bdf_filename = os.path.abspath(os.path.join(pkg_path, '..', 'models', 'iSat', 'ISat_Launch_Sm_Rgd.dat'))\n",
      "\n",
      "# read the file as a path\n",
      "bdf2 = BDF()\n",
      "bdf2.read_bdf(bdf_filename, xref=True)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "INFO:      fname=bdf.pyc                   lineNo=1002   opening 'c:\\\\nasa\\\\m4\\\\formats\\\\pynastran_v0.7\\\\models\\\\iSat\\\\ISat_Launch_Sm_Rgd.dat'\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "DEBUG:     fname=bdf.pyc                   lineNo=750    ---starting BDF.read_bdf of c:\\nasa\\m4\\formats\\pynastran_v0.7\\models\\iSat\\ISat_Launch_Sm_Rgd.dat---\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "DEBUG:     fname=bdf.pyc                   lineNo=752    ---reading executive & case control decks---\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "DEBUG:     fname=bdf.pyc                   lineNo=954    found the end of the Case Control Deck!\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "DEBUG:     fname=bdf.pyc                   lineNo=956    finished with Case Control Deck...\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "DEBUG:     fname=bdf.pyc                   lineNo=1186   reading Bulk Data Deck...\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "INFO:      fname=bdf.pyc                   lineNo=1223   reject card_name = USET\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "INFO:      fname=bdf.pyc                   lineNo=1025   closing 'c:\\\\nasa\\\\m4\\\\formats\\\\pynastran_v0.7\\\\models\\\\iSat\\\\ISat_Launch_Sm_Rgd.dat'\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "DEBUG:     fname=crossReference.pyc        lineNo=27     Cross Referencing...\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "DEBUG:     fname=bdf.pyc                   lineNo=765    ---finished BDF.read_bdf of c:\\nasa\\m4\\formats\\pynastran_v0.7\\models\\iSat\\ISat_Launch_Sm_Rgd.dat---\n"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print \"attributes =\", object_attributes(bdf)\n",
      "print \"\"\n",
      "print \"methods =\",object_methods(bdf)\n",
      "print bdf.get_bdf_stats()\n",
      "print \"card_count =\", bdf.card_count\n",
      "print \"reject_count =\", bdf.reject_count"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "attributes = ['MATS1', 'MATS3', 'MATS8', 'MATT1', 'MATT2', 'MATT3', 'MATT4', 'MATT5', 'MATT8', 'MATT9', 'active_filename', 'active_filenames', 'aefacts', 'aelinks', 'aelists', 'aeparams', 'aero', 'aeros', 'aestats', 'aesurfs', 'asets', 'bcrparas', 'bcs', 'bctadds', 'bctparas', 'bctsets', 'bdf_filename', 'bsets', 'bsurf', 'bsurfs', 'cMethods', 'caeros', 'card_count', 'cardsToRead', 'caseControlDeck', 'case_control_lines', 'convectionProperties', 'coords', 'creepMaterials', 'csets', 'dareas', 'dconstrs', 'ddvals', 'debug', 'dequations', 'desvars', 'dlinks', 'dmigs', 'dmijis', 'dmijs', 'dmiks', 'dmis', 'doptprm', 'dresps', 'dscreen', 'dvmrels', 'dvprels', 'echo', 'elements', 'executive_control_lines', 'flfacts', 'flutters', 'frequencies', 'gridSet', 'gusts', 'has_case_control_deck', 'hyperelasticMaterials', 'iSolLine', 'include_dir', 'loads', 'log', 'masses', 'materials', 'methods', 'mkaeros', 'modelType', 'mpcObject', 'mpcadds', 'mpcs', 'nlparms', 'nlpcis', 'nodes', 'paeros', 'params', 'pbusht', 'pdampt', 'pelast', 'phbdys', 'points', 'properties', 'properties_mass', 'qsets', 'randomTables', 'reject_cards', 'reject_count', 'rejects', 'rigidElements', 'rsolmap_toStr', 'sets', 'setsSuper', 'sol', 'solMethod', 'spcObject', 'spcadds', 'spcs', 'specialCards', 'splines', 'spoints', 'suports', 'tables', 'thermalMaterials', 'trims', 'tstepnls', 'tsteps', 'uniqueBulkDataCards']\n",
        "\n",
        "methods = ['AEFact', 'AELink', 'AEList', 'AEParam', 'AEStat', 'Aero', 'Aeros', 'CAero', 'CMethod', 'Coord', 'DConstr', 'DDVal', 'DMIG', 'Desvar', 'Element', 'Elements', 'FLFACT', 'Flfact', 'Flutter', 'Gust', 'HyperelasticMaterial', 'Load', 'Mass', 'MassProperties', 'Material', 'Materials', 'Method', 'NLParm', 'Node', 'Nodes', 'PAero', 'Phbdy', 'Properties', 'Property', 'PropertyMass', 'RandomTable', 'RigidElement', 'SPC', 'Set', 'SetSuper', 'Spline', 'StructuralMaterial', 'Table', 'ThermalMaterial', 'add_AEFACT', 'add_AELINK', 'add_AELIST', 'add_AEPARM', 'add_AERO', 'add_AEROS', 'add_AESTAT', 'add_AESURF', 'add_ASET', 'add_BCRPARA', 'add_BCTADD', 'add_BCTPARA', 'add_BCTSET', 'add_BSET', 'add_BSURF', 'add_BSURFS', 'add_CAERO', 'add_CSET', 'add_DAREA', 'add_DCONSTR', 'add_DDVAL', 'add_DEQATN', 'add_DESVAR', 'add_DLINK', 'add_DMI', 'add_DMIG', 'add_DMIJ', 'add_DMIJI', 'add_DMIK', 'add_DRESP', 'add_DVMREL', 'add_DVPREL', 'add_FLFACT', 'add_FLUTTER', 'add_FREQ', 'add_GUST', 'add_LSEQ', 'add_MKAERO', 'add_NLPARM', 'add_NLPCI', 'add_PAERO', 'add_PARAM', 'add_PBUSHT', 'add_PDAMPT', 'add_PELAST', 'add_PHBDY', 'add_QSET', 'add_SESET', 'add_SET', 'add_SPLINE', 'add_SPOINT', 'add_TRIM', 'add_TSTEP', 'add_TSTEPNL', 'add_card', 'add_cmethod', 'add_constraint', 'add_constraint_MPC', 'add_constraint_MPCADD', 'add_constraint_SPC', 'add_constraint_SPCADD', 'add_convection_property', 'add_coord', 'add_creep_material', 'add_damper', 'add_element', 'add_hyperelastic_material', 'add_load', 'add_mass', 'add_material_dependence', 'add_method', 'add_node', 'add_property', 'add_property_mass', 'add_random_table', 'add_rigid_element', 'add_structural_material', 'add_suport', 'add_table', 'add_thermal_BC', 'add_thermal_element', 'add_thermal_load', 'add_thermal_material', 'auto_reject_bdf', 'coordIDs', 'cross_reference', 'disable_cards', 'echo_bdf', 'elementIDs', 'getElementIDsWithPID', 'getElementIDsWithPIDs', 'getMaterialIDToPropertyIDsMap', 'getNodeIDToElementIDsMap', 'getNodeIDsWithElement', 'getNodeIDsWithElements', 'getNodes', 'getPropertyIDToElementIDsMap', 'get_bdf_stats', 'get_x_associated_with_y', 'is_reject', 'mass', 'mass_properties', 'materialIDs', 'nCAeros', 'nElements', 'nNodes', 'nodeIDs', 'process_card', 'propertyIDs', 'read_bdf', 'resolveGrids', 'resolve_grids', 'set_dynamic_syntax', 'structuralMaterialIDs', 'sum_forces_moments', 'sum_forces_moments_elements', 'test_method', 'thermalMaterialIDs', 'unresolveGrids', 'unresolve_grids', 'update_solution', 'write_bdf']\n",
        "---BDF Statistics---\n",
        "SOL 103\n",
        "\n",
        "bdf.params\n",
        "  PARAM    : 8\n",
        "\n",
        "bdf.nodes\n",
        "  GRID     : 5380\n",
        "\n",
        "bdf.elements\n",
        "  CBAR     : 827\n",
        "  CBUSH    : 104\n",
        "  CHEXA    : 25\n",
        "  CQUAD4   : 4580\n",
        "  CTRIA3   : 32\n",
        "\n",
        "bdf.rigidElements\n",
        "  RBE2     : 44\n",
        "\n",
        "bdf.properties\n",
        "  PBAR     : 1\n",
        "  PBARL    : 18\n",
        "  PBUSH    : 2\n",
        "  PSHELL   : 8\n",
        "  PSOLID   : 4\n",
        "\n",
        "bdf.materials\n",
        "  MAT1     : 14\n",
        "  MAT8     : 8\n",
        "\n",
        "bdf.coords\n",
        "  CORD2R   : 75\n",
        "\n",
        "bdf.methods\n",
        "  EIGRL    : 1\n",
        "\n",
        "Rejected Cards\n",
        "  USET:    1\n",
        "\n",
        "card_count = {u'PARAM': 8, u'CQUAD4': 4580, u'PSOLID': 4, u'PBUSH': 2, u'CBUSH': 104, u'ENDDATA': 1, u'PBARL': 18, u'MAT1': 14, u'CTRIA3': 32, u'CORD2R': 75, u'PSHELL': 8, u'USET': 1, u'GRID': 5380, u'EIGRL': 1, u'CBAR': 827, u'PBAR': 1, u'CHEXA': 25, u'SPC': 1, u'CONM2': 15, u'RBE2': 44, u'MAT8': 8}\n",
        "reject_count = {u'USET': 1}\n"
       ]
      }
     ],
     "prompt_number": 58
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# explanation of cross-referencing\n",
      "\n",
      "# no cross referencing (xref=False)\n",
      "cquad = bdf.elements[1]\n",
      "nid1 = cquad.nodes[0]\n",
      "print \"nid1 =\", nid1\n",
      "n1 = bdf.nodes[nid1]\n",
      "cd4 = n1.cd\n",
      "c4 = bdf.coords[cd4]\n",
      "print \"i xref=False\", c4.i\n",
      "#print object_attributes(c4)\n",
      "\n",
      "# cross referenced (xref=True)\n",
      "print \"i xref=True\", bdf2.elements[1].nodes[0].cd.i\n",
      "\n",
      "# how is it done?\n",
      "cquad.nodes[0] = n1\n",
      "print cquad.nodes[0]"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "nid1 = 1\n",
        "i xref=False [ 1.  0.  0.]\n",
        "i xref=True [ 1.  0.  0.]\n",
        "$*\n",
        "$*  GRID CARDS\n",
        "$*\n",
        "GRID           1       4    -4.5    -7.5    -14.       4\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 20
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# some Grid methods\n",
      "n1 = bdf2.nodes[1]\n",
      "print n1\n",
      "\n",
      "# the comment\n",
      "c1 = bdf2.nodes[1].comment()\n",
      "c2 = bdf2.nodes[2].comment()\n",
      "print \"c1=%r\" % c1\n",
      "print \"c2=%r\" % c2\n",
      "\n",
      "\n",
      "# get the position of a node\n",
      "# in the local cooordinate system\n",
      "print \"xyz =\", n1.xyz\n",
      "\n",
      "# in the global frame\n",
      "print \"position =\", n1.Position()\n",
      "\n",
      "# in an arbitrary frame\n",
      "print \"wrt5 =\", n1.PositionWRT(bdf2, 5)\n",
      "print \"wrt4 =\", n1.PositionWRT(bdf2, 4)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "$*\n",
        "$*  GRID CARDS\n",
        "$*\n",
        "GRID           1       4    -4.5    -7.5    -14.       4\n",
        "\n",
        "c1=u'$*\\n$*  GRID CARDS\\n$*\\n'\n",
        "c2=u''\n",
        "xyz = [ -4.5  -7.5 -14. ]\n",
        "position = [ -4.5  -7.5 -14. ]\n",
        "wrt5 = [  2.12132034  14.         -26.59188309]\n",
        "wrt4 = [ -4.5  -7.5 -14. ]\n"
       ]
      }
     ],
     "prompt_number": 23
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "n1 = bdf2.nodes[1]\n",
      "n1.xyz[1] = -7.5\n",
      "print \"repr  =\", n1.reprFields()\n",
      "print \"raw   =\", n1.rawFields()\n",
      "\n",
      "#n1.xyz[1] = 100000000000.\n",
      "print \"repr2 =\", n1.reprFields()\n",
      "print n1\n",
      "print n1.write_bdf2(size=8)\n",
      "print n1.write_bdf2(size=16, double=False)\n",
      "print n1.write_bdf2(size=16, double=True)"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "repr  = [u'GRID', 1, 4, -4.5, -7.5, -14.0, 4, '', None]\n",
        "raw   = [u'GRID', 1, 4, -4.5, -7.5, -14.0, 4, '', 0]\n",
        "repr2 = [u'GRID', 1, 4, -4.5, -7.5, -14.0, 4, '', None]\n",
        "$*\n",
        "$*  GRID CARDS\n",
        "$*\n",
        "GRID           1       4    -4.5    -7.5    -14.       4\n",
        "\n",
        "$*\n",
        "$*  GRID CARDS\n",
        "$*\n",
        "GRID           1       4    -4.5    -7.5    -14.       4\n",
        "\n",
        "$*\n",
        "$*  GRID CARDS\n",
        "$*\n",
        "GRID*                  1               4            -4.5            -7.5\n",
        "*                   -14.               4\n",
        "\n",
        "$*\n",
        "$*  GRID CARDS\n",
        "$*\n",
        "GRID*                  1               4-4.500000000D+00-7.500000000D+00\n",
        "*       -1.400000000D+01               4\n",
        "\n"
       ]
      }
     ],
     "prompt_number": 33
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print \"mass = \", bdf2.Mass()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "mass =  "
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "1.77460115784\n"
       ]
      }
     ],
     "prompt_number": 8
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "eid100 = bdf2.elements[100]\n",
      "print eid100\n",
      "print \"nodes =\", eid100.nodes\n",
      "print \"--node0--\\n\", eid100.nodes[0]\n",
      "print \"--cd--\\n\", eid100.nodes[0].cd\n",
      "print \"cd.cid\", eid100.nodes[0].cd.cid\n",
      "\n",
      "print \"area =\", eid100.Area()\n",
      "print \"mass =\", eid100.Mass()\n",
      "print \"--pid--\\n\", eid100.pid\n",
      "print \"pid.pid =\", eid100.pid.pid\n",
      "print \"pid.Pid() =\", eid100.Pid()\n",
      "\n",
      "print eid100.pid.mid1\n",
      "print \"type =\", eid100.pid.mid1.type\n",
      "print \"nu12 =\", eid100.pid.mid1.nu12\n",
      "print \"mass =\", eid100.Mass()"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "CQUAD4       100       1     149     152     161     160\n",
        "\n",
        "nodes = [GRID         149       4      3.     7.5   -16.5       4\n",
        ", GRID         152       4     1.5     7.5   -16.5       4\n",
        ", GRID         161       4     1.5     7.5    -14.       4\n",
        ", GRID         160       4      3.     7.5    -14.       4\n",
        "]\n",
        "--node0--\n",
        "GRID         149       4      3.     7.5   -16.5       4\n",
        "\n",
        "--cd--\n",
        "CORD2R         4              0.      0.      0.      0.      0.      1.\n",
        "              1.      0.      0.\n",
        "\n",
        "cd.cid 4\n",
        "area = 3.75\n",
        "mass = 3.6428803074e-05\n",
        "--pid--\n",
        "$*\n",
        "$*  PROPERTY CARDS\n",
        "$*\n",
        "$*\n",
        "$*  I-DEAS property: 1  name: BUS PNL HCMB 2PLY\n",
        "PSHELL         1       6    .036       61415.815       7  22.234 3.551-6\n",
        "              .4     -.4\n",
        "\n",
        "pid.pid = 1\n",
        "pid.Pid() = 1\n",
        "$*\n",
        "$*  I-DEAS Material: 6  name: BUS_CFRP_PW_ORTHO\n",
        "$* M46J PW ETW\n",
        "MAT8           6   1.7+7   1.7+7     .98 340000. 180000. 180000..0001712\n",
        "                           71.33\n",
        "\n",
        "type = MAT8\n",
        "nu12 = 0.98\n",
        "mass = 3.6428803074e-05\n"
       ]
      }
     ],
     "prompt_number": 34
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "import getpass\n",
      "name = getpass.getuser()\n",
      "os.chdir(os.path.join(r'C:\\Users', name, 'Desktop'))"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [],
     "prompt_number": 36
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "pwd"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "pyout",
       "prompt_number": 37,
       "text": [
        "u'C:\\\\Users\\\\sdoyle\\\\Desktop'"
       ]
      }
     ],
     "prompt_number": 37
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "# write the bdf\n",
      "bdf2.write_bdf('fem.bdf', interspersed=True, size=8, precision='single')\n",
      "!tail -n 5 \"fem.bdf\"\n",
      "\n",
      "bdf2.write_bdf('fem.bdf', interspersed=True, size=16, precision='single')\n",
      "!tail \"fem.bdf\"\n",
      "\n",
      "bdf2.write_bdf('fem.bdf', interspersed=True, size=16, precision='double')\n",
      "!tail \"fem.bdf\"\n",
      "\n"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "DEBUG:     fname=bdf_writeMesh.pyc         lineNo=96     ***writing fem.bdf\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "CORD2R        75        1.355-13-2.19-15    -40.1.355-13-2.19-15      0.\n",
        "             40.-2.19-15    -40.\n",
        "CORD2R        76        1.355-13-2.19-15    -40.1.355-13-2.19-15      0.\n",
        "             40.-2.19-15    -40.\n",
        "ENDDATA\n",
        "DEBUG:     fname=bdf_writeMesh.pyc         lineNo=96     ***writing fem.bdf\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "*\n",
        "CORD2R*               75                 1.3549966049-13-2.1854783949-15\n",
        "*                   -40. 1.3549966049-13-2.1854783949-15              0.\n",
        "*                    40.-2.1854783949-15            -40.\n",
        "*\n",
        "CORD2R*               76                 1.3549966049-13-2.1854783949-15\n",
        "*                   -40. 1.3549966049-13-2.1854783949-15              0.\n",
        "*                    40.-2.1854783949-15            -40.\n",
        "*\n",
        "ENDDATA\n",
        "DEBUG:     fname=bdf_writeMesh.pyc         lineNo=96     ***writing fem.bdf\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "*\n",
        "CORD2R*               75                1.3549966049D-13-2.185478395D-15\n",
        "*       -4.000000000D+011.3549966049D-13-2.185478395D-150.0000000000D+00\n",
        "*       4.0000000000D+01-2.185478395D-15-4.000000000D+01\n",
        "*\n",
        "CORD2R*               76                1.3549966049D-13-2.185478395D-15\n",
        "*       -4.000000000D+011.3549966049D-13-2.185478395D-150.0000000000D+00\n",
        "*       4.0000000000D+01-2.185478395D-15-4.000000000D+01\n",
        "*\n",
        "ENDDATA\n"
       ]
      }
     ],
     "prompt_number": 49
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "bdf_filename"
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "ename": "NameError",
       "evalue": "name 'bdf_filename' is not defined",
       "output_type": "pyerr",
       "traceback": [
        "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m\n\u001b[1;31mNameError\u001b[0m                                 Traceback (most recent call last)",
        "\u001b[1;32m<ipython-input-17-7c9dff55e813>\u001b[0m in \u001b[0;36m<module>\u001b[1;34m()\u001b[0m\n\u001b[1;32m----> 1\u001b[1;33m \u001b[0mbdf_filename\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m",
        "\u001b[1;31mNameError\u001b[0m: name 'bdf_filename' is not defined"
       ]
      }
     ],
     "prompt_number": 17
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "print bdf_filename\n",
      "%echo {bdf_filename}\n",
      "#!pyNastranGUI_qt -f nastran -i {bdf_filename}\n",
      "\n",
      "solid_bending_bdf = os.path.abspath(os.path.join(pkg_path, '..', 'models', 'solid_bending', 'solid_bending.bdf'))\n",
      "solid_bending_op2 = os.path.abspath(os.path.join(pkg_path, '..', 'models', 'solid_bending', 'solid_bending.op2'))\n",
      "\n",
      "!pyNastranGUI_qt -f nastran -i {solid_bending_bdf} -o {solid_bending_op2} --centroidal > junk.out\n",
      "#!pyNastranGUI_qt -f nastran -i {solid_bending_bdf} -o {solid_bending_op2} --nodal\n",
      "print \"done\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "c:\\nasa\\m4\\formats\\pynastran_v0.7\\models\\iSat\\ISat_Launch_Sm_Rgd.dat\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "c:\\nasa\\m4\\formats\\pynastran_v0.7\\models\\iSat\\ISat_Launch_Sm_Rgd.dat\n"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "done\n"
       ]
      }
     ],
     "prompt_number": 34
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [
      "f = open('script.py', 'wb')\n",
      "f.write('self.on_wireframe()\\n')\n",
      "f.write(\"self.on_take_screenshot('C:/Users/sdoyle/notebooks/pynastran/demo/picture.png')\\n\")\n",
      "f.write('sys.exit()')\n",
      "f.close()\n",
      "\n",
      "!pyNastranGUI_qt -f nastran -i {solid_bending_bdf} -o {solid_bending_op2} --centroidal --pyscript script.py > junk.out\n",
      "\n",
      "!picture.png\n",
      "#!_solid_bending.png\n",
      "\n",
      "from IPython.display import Image\n",
      "from IPython.display import display\n",
      "assert os.path.exists('_solid_bending.png')\n",
      "i = Image(filename='_solid_bending.png')\n",
      "display(i)\n",
      "print \"asdf\""
     ],
     "language": "python",
     "metadata": {},
     "outputs": [
      {
       "metadata": {},
       "output_type": "display_data",
       "png": "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\n1q1bp06dSkS3bt0aP358SUmJ9m0RkVwuv3TpUnh4+OHDh1lJeHg4uzh06FBoaOiFCxfi4uKcnJyI\nKCAgQAgTaFygUqtR6Ca8uwkAAABN0Yrm9+7mir/kde7u7pcvXyairKysHj16CPPQAktLy5iYGBsb\nG3GhUqlct27dsmXLKioqWAnHcevWrVu4cCERJSUlDR48OCsrS6Wq57bVu3fvmJgYIgoNDWXrWKys\nrGJiYlj6LlAoFBs2bFi8eLHQumD+/Pn+/v5E5O3tLZ7t1nIUOgvz4gAAAABNjYGBwfbt29n1woUL\n1ZNjIsrOzu7Tp09AQEBiYmJ5eXlGRsahQ4fc3Ny++uorcQq7fPlyloinpaV5enqqJ+LatMWWepNo\nVjsrK8vZ2Xnbtm1JSUkVFRWPHz8ODg7u16+ft7e3xgRavYZajUJnYV4cAAAAmqJmPy8OLwXMiwMA\nAAAASAO5OAAAAACANJCLAwAAAABIA7k4AAAAAIA0kIsDAAAAAEgDuTgAAAAAgDSQiwMAAAAASAO5\nOAAAAACANJCLAwAAAABIA7k4AAAAAIA0kIsDAAAAAEgDuTgAAAAAgDQ05OI8z9+5c4fjOJVyjuNi\nY2N5nm+43tja2laJKBSKe/fusVs9evQIDQ0tKiq6f//+119/LZPJao6fOXPmzZs3i4qKrl+//ve/\n/11owsnJ6erVq0VFRaGhoR06dKhVHwAAAACaEkNDw5UrV0ZFRRUXF8fGxs6ZM0dPr6aJWmdn5+Li\nYp7nAwMDxeVGRkY+Pj5hYWEFBQVJSUmLFi3S19evrhIHB4eMjAye53meX7RoUQ3NWVpaVlZW8mo8\nPDzEYe7u7iEhIfHx8SUlJQkJCYGBgZ06dVKpysLCwsfHJyoqKj8/v6Cg4Nq1awsXLjQwMKih9cYh\n01hqZGQ0ePDgS5cuiQuHDBliaGjYoL3573//y5JsZv78+W5ubkRkbGx8/vz5gICA999/39LScufO\nnRzHrV69urr4Dz/80NfX9+9//3tERETfvn137tzZsmXL7du3cxy3b9++zZs37927d9myZVu3bh0/\nfryWfQAAAABoSjp37hwWFtalSxf20cnJacuWLRzHbdmy5f/bO9e4KKvtj+9nGBQHEBGEYaC4KoKi\neUGzEFKMI2ri5WDlJbUSzI5aCkp5Q9O85J1UyEtAXtKjYKSIkJR4i0IEAgSBJEBmAJmB4SIoM8//\n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\n",
       "text": [
        "<IPython.core.display.Image at 0x3fa2ef0>"
       ]
      },
      {
       "output_type": "stream",
       "stream": "stdout",
       "text": [
        "asdf\n"
       ]
      }
     ],
     "prompt_number": 56
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": []
    },
    {
     "cell_type": "code",
     "collapsed": false,
     "input": [],
     "language": "python",
     "metadata": {},
     "outputs": []
    }
   ],
   "metadata": {}
  }
 ]
}